package com.nongcai159.mall.lib_common.base

import android.app.Application

import com.alibaba.android.arouter.launcher.ARouter
import com.luliang.shapeutils.DevShapeUtils
import com.nongcai159.mall.lib_common.BuildConfig
import com.nongcai159.mall.lib_common.utils.CrashHandler
import com.nongcai159.mall.lib_common.utils.ImageLoader
import com.nongcai159.mall.lib_common.utils.MLog
import com.orhanobut.logger.LogLevel

/**
 * Created by tanbiheng on 2018/11/23.
 */

open class BaseApplication : Application() {

    override fun onCreate() {
        super.onCreate()

        INSTANCE = this

        if (BuildConfig.DEBUG) {   // 这两行必须写在init之前，否则这些配置在init过程中将无效
            ARouter.openLog()     // 打印日志
            ARouter.openDebug()   // 开启调试模式(如果在InstantRun模式下运行，必须开启调试模式！线上版本需要关闭,否则有安全风险)
        }
        ARouter.init(this) // 尽可能早，推荐在Application中初始化

        // 友盟统计初始化
        //        UMengSDK.init(this);

        // 初始化logger
        if (BuildConfig.DEBUG) {
            MLog.init().logLevel(LogLevel.FULL)
        } else {
            MLog.init().logLevel(LogLevel.NONE)
        }

        // 错误信息写入文件
        CrashHandler.getInstance().init(this);

        // 初始化自定义shape
        DevShapeUtils.init(this)
    }

    override fun onLowMemory() {
        super.onLowMemory()
        ImageLoader.onLowMemory(this)
    }

    override fun onTrimMemory(level: Int) {
        super.onTrimMemory(level)
        ImageLoader.onTrimMemory(this, level)
    }

    companion object {
        var INSTANCE: BaseApplication? = null
            private set
    }
}
